#include<bits/stdc++.h>
using namespace std;
int n,ser,cli,o,p;
string c;
char cc[5];//fuhao
bool w;
struct s {
	int a[4],e,no;
} s[2][1010];
int main() {
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	for(int i=1; i<=n; i++) {
		cin>>c;
		if(c[0]=='S') o=ser,p=0;
		else o=cli,p=1;
		scanf("%d%c%d%c%d%c%d%c%d",&s[p][o].a[0],&cc[0],&s[p][o].a[1],&cc[1],&s[p][o].a[2],&cc[2],&s[p][o].a[3],&cc[3],&s[p][o].e);
		w=1;
		if(s[p][o].e<0||s[p][o].e>65535||cc[3]!=':') w=0;
		for(int k=0; k<4&&w; k++){
			if(s[p][o].a[k]<0||s[p][o].a[k]>255) w=0;
			if(k<3&&cc[k]!='.') w=0;
		}
		if(!w) printf("ERR\n");
		else {
			w=0;
			if(c=="Server") {
				//Server
				for(int k=0; k<o; k++) {
					w=1;
					if(s[p][k].e!=s[p][o].e) w=0;
					for(int j=0; j<4&&w; j++) {
						if(s[p][k].a[j]!=s[p][o].a[j]) w=0;
					}
					if(w) { //find the same
						printf("FAIL\n");
						break;
					}
				}
				if(w) continue;
				printf("OK\n");
				ser++;
			} else {
				//Client
				for(int k=0; k<ser; k++) {
					w=1;
					if(s[0][k].e!=s[p][o].e) w=0;
					for(int j=0; j<4&&w; j++) {
						if(s[0][k].a[j]!=s[p][o].a[j]) w=0;
					}
					if(w) { //find the same
						s[0][k].no++;
						printf("%d\n",s[0][k].no);
						break;
					}
				}
				if(!w) printf("FAIL\n");
				else cli++;
			}
		}
	}
	return 0;
}

